Computing devices typically employ two types of memory: volatile memory and nonvolatile memory. Volatile memory refers to memory that needs to be supplied with power in order to maintain its state. If such power is not supplied to the volatile memory, the volatile memory loses its state—any data and/or instructions stored in the volatile memory is lost. Nonvolatile memory refers to memory that does not need to be supplied with power in order to maintain its state. Once data and/or instructions are written to the nonvolatile memory, such data and/or instructions are maintained in the nonvolatile memory regardless of whether power is supplied to the nonvolatile memory.
Typically, two different memory controllers are included in a computing device—one controlling the volatile memory and another controlling the nonvolatile memory. In light of the many different types and configurations of volatile memory, the memory controller controlling the volatile memory typically needs to be configured in a particular way in order to allow the memory controller to control the volatile memory. This configuration of the volatile memory controller is typically performed by executing instructions obtained from the nonvolatile memory by the nonvolatile memory controller.